// 网络请求状态的封装

// 引入 uni-ajax 模块
import ajax from '@/uni_modules/u-ajax'
import { useUserStore } from '@/stores/user.js';

// 创建请求实例
const instance = ajax.create({
	// 配置基地址
	baseURL: 'https://slwl-api.itheima.net'
})

// 添加请求拦截器
instance.interceptors.request.use(
	config => {
		// 在发送请求前做些什么
		uni.showToast({
			title: '正在加载中...',
		})
		//  1.token请求头 
		const store = useUserStore()
		// console.log('token', store.token);
		if (store.token) {
			config.header.Authorization = store.token
		}
		return config
	},
	error => {
		// 对请求错误做些什么
		return Promise.reject(error)
	}
)

// 添加响应拦截器
instance.interceptors.response.use(
	response => {
		// 对响应数据做些什么
		// 1. 200执行
		if (response.data.code !== 200) {
			setTimeout(() => {
				uni.showToast({
					title: response.data.msg
				})
			}, 1000)
		}
		// 2. 简化返回的数据  对请求错误的处理
		return response.data
	},
	error => {
		// 对响应错误做些什么
		// token 失效 处理
		if (error.statusCode === 401) {
			uni.utils.message('token失效! 请重新登录')
			// 获取到当前页面路径 登录成功后跳回  如果没有则去 login页面
			const pageStack = getCurrentPages()
			const fullPath = pageStack[pageStack.length - 1].$page.fullPath
			console.log('历史页面', fullPath);
			// 跳转到登录页
			uni.redirectTo({
				url: `/pages/login/index?redirectURL=${fullPath}`
			})
			// uni.utils.push(`/pages/login/index?redirectURL=${fullPath}`)
		}
		console.log('错误提示', error.statusCode);
		return Promise.reject(error)
	}
)

// 导出 create 创建后的实例
export default instance